home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS078A.dsk / SIMON+.bas < prev    next >
BASIC Source File  |  2012-02-16  |  11KB  |  316 lines

  1. 1  REM ***********************
  2. 2  REM       SIMON+
  3. 3  REM     M.WIDMANN
  4. 4  REM ***********************
  5. 5  REM 
  6. 79  GOSUB 14000
  7. 80  GOSUB 12000: REM  DISPLAY
  8. 90  GOSUB 13000: REM  MUSIC
  9. 95  DIM A(18): DIM C(18)
  10. 99 SC(1) = 0
  11. 100  REM  SELECTION OF SEGMENTS
  12. 110 N = 0:I = 0
  13. 120 N = N +1
  14. 130  IF N = 19  THEN  GOTO 400
  15. 140 A(N) =  INT(1 +4 * RND(1))
  16. 145  FOR D = 1 TO 300: NEXT 
  17. 150  FOR I = 1 TO N
  18. 160  LET C(I) = A(I)
  19. 170  GOSUB 10000
  20. 180  NEXT 
  21. 190  HOME : VTAB 22: PRINT 
  22. 200  PRINT "TYPE THE SEQUENCE AS YOU SAW IT :"
  23. 210 I = 0
  24. 220 I = I +1
  25. 221 X =  PEEK( -16384)
  26. 222  IF X <128  THEN  GOTO 221
  27. 223  POKE  -16368,0
  28. 224 C(I) =  VAL( CHR$(X -128))
  29. 230  HOME 
  30. 250  GOSUB 10000
  31. 260  IF C(I) < >A(I)  THEN  GOTO 300
  32. 270  IF I = N  THEN  GOTO 120
  33. 280  GOTO 220
  34. 300  HOME : VTAB 23
  35. 305  INVERSE : HTAB 12
  36. 310  PRINT "......MISSED......"
  37. 320  FOR D = 1 TO 10
  38. 330  POKE 768,63: POKE 769,30: CALL 770
  39. 340  POKE 768,120: POKE 769,5: CALL 770
  40. 350  NEXT 
  41. 400  PRINT :SP = N -1:SC(2) =  INT((SP *100)/12)
  42. 410  HOME : VTAB 24: HTAB 9
  43. 420  PRINT "YOUR SCORE IS "SP" OR "SC(2)"%"
  44. 430  NORMAL 
  45. 435  IF SC(2) >SC(1)  THEN SC(1) = SC(2)
  46. 440  INPUT "TYPE'A'TO REPEAT TEST,'B'TO CONTINUE PROGRAM,'C'TO EXIT :";B$
  47. 450  IF B$ = "A"  THEN  GOTO 100
  48. 460  IF B$ = "B"  THEN  GOTO 600
  49. 470  IF B$ = "C"  THEN  GOTO 15000: REM   FIX THIS     
  50. 480  GOTO 440
  51. 600  REM  SECOND GAME
  52. 610 SC(3) = 0
  53. 620  DIM B(6): DIM Y(6): DIM X(6)
  54. 622  GOSUB 13000: REM  MUSIC
  55. 623  HOME 
  56. 624  GOSUB 17000: REM  DISPLAY
  57. 640 N = 1:FLAG = 0
  58. 642  POKE 768,104: POKE 769,30: CALL 770: POKE 768,84: POKE 769,30: CALL 770: POKE 768,69: POKE 769,30: CALL 770: POKE 768,57: POKE 769,35: CALL 770
  59. 644  FOR TI = 1 TO 80: NEXT 
  60. 646  POKE 768,69: POKE 769,30: CALL 770: POKE 768,57: POKE 769,200: CALL 770
  61. 648  FOR TI = 1 TO 300: NEXT 
  62. 660 Y(N) = 20:B(N) = 20
  63. 661 X(N) = 20
  64. 680 N = N +1
  65. 690 B(N) =  INT(5 +30 * RND(1))
  66. 700  IF B(N) = B(N -2)  THEN  GOTO 690
  67. 710  IF FLAG = 1  THEN  GOTO 760
  68. 720 Y(N) = B(N)
  69. 730 X(N) = B(N -1)
  70. 740 FLAG = 1
  71. 750  GOTO 790
  72. 760 X(N) = B(N)
  73. 770 Y(N) = B(N -1)
  74. 780 FLAG = 0
  75. 790  IF N = 6  THEN  GOTO 810
  76. 800  GOTO 680
  77. 810  COLOR= 0:TT = 0
  78. 815 SO = 20:TU = 20
  79. 816 D =  -16336
  80. 820 N = 2
  81. 825 Z = 1
  82. 830  IF X(N -1) = X(N)  THEN  GOTO 913
  83. 831  IF X(N -1) >X(N)  THEN  GOTO 833
  84. 832  GOTO 840
  85. 833 Z =  -1
  86. 840  FOR SF = X(N -1) TO X(N)  STEP Z
  87. 850  REM 
  88. 860  PLOT SF,Y(N)
  89. 895 NI =  PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D)
  90. 900  FOR TI = 1 TO 40: NEXT 
  91. 910  NEXT 
  92. 912  GOTO 1000
  93. 913  IF Y(N -1) >Y(N)  THEN  GOTO 915
  94. 914  GOTO 920
  95. 915 Z =  -1
  96. 920  FOR TF = Y(N -1) TO Y(N)  STEP Z
  97. 930  REM 
  98. 940  PLOT X(N),TF
  99. 970 NI =  PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D)
  100. 980  FOR TI = 1 TO 40: NEXT 
  101. 990  NEXT 
  102. 1000 N = N +1
  103. 1010  IF N = 7  THEN  GOTO 1025
  104. 1020  GOTO 825
  105. 1025  IF TT = 1  THEN  GOTO 1600
  106. 1026  COLOR= 15
  107. 1030  FOR TI = 5 TO 34
  108. 1040  HLIN 5,34 AT TI
  109. 1050  NEXT 
  110. 1060  HOME : VTAB 21
  111. 1070  PRINT "RECREATE THE PATTERN YOU SAW,USING THE  FOLLOWING KEYS :"
  112. 1080  PRINT "'J'MOVE LEFT.......'K'MOVE RIGHT"
  113. 1090  PRINT "'I'MOVE UP  .......'M'MOVE DOWN";
  114. 1092  POKE 768,94: POKE 769,30: CALL 770: POKE 768,57: POKE 769,35: CALL 770: POKE 768,69: POKE 769,50: CALL 770
  115. 1100  REM  DRAWING ROUTINE
  116. 1105  COLOR= 0: PLOT 20,20
  117. 1110 XO = 20:YO = 20:N = 0:VT = 0:VD = 0
  118. 1120 EFLAG = 5:FLAG = 0
  119. 1140  IF N > = 5  AND TU =  -59  THEN  GOTO 1500
  120. 1144 Z =  PEEK( -16384)
  121. 1150  IF Z >127  THEN  GOTO 1180
  122. 1155  GOTO 1144
  123. 1180  POKE  -16368,0
  124. 1210 TU =  INT(Z -200)
  125. 1215  IF TU <1  OR TU >5  THEN  GOTO 1140
  126. 1220  ON TU GOTO 1360,1250,1290,1240,1400
  127. 1240  GOTO 1140: REM  WRONG KEY
  128. 1250  IF EFLAG < >1  THEN  GOSUB 16000
  129. 1260 EFLAG = 1
  130. 1270 XN = XO -1
  131. 1280  GOTO 1320
  132. 1290  IF EFLAG < >2  THEN  GOSUB 16000
  133. 1300 EFLAG = 2
  134. 1310 XN = XO +1
  135. 1320  IF XN <4  OR XN >35  THEN  GOTO 1140
  136. 1330 XO = XN
  137. 1340  COLOR= 0: PLOT XO,YO
  138. 1345 NI =  PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D) - PEEK(D) + PEEK(D)
  139. 1350  GOTO 1140
  140. 1360  IF EFLAG < >3  THEN  GOSUB 16000
  141. 1370 EFLAG = 3
  142. 1380 YN = YO -1
  143. 1390  GOTO 1430
  144. 1400  IF EFLAG < >4  THEN  GOSUB 16000
  145. 1410 EFLAG = 4
  146. 1420 YN = YO +1
  147. 1430  IF YN <4  OR YN >35  THEN  GOTO 1140
  148. 1440 YO = YN
  149. 1450  GOTO 1340
  150. 1500  REM  SCORE
  151. 1505 R(6) = YO
  152. 1510  FOR N = 2 TO 6
  153. 1530  IF R(N) <B(N)  THEN  GOTO 1550
  154. 1540 VD = R(N) -B(N): GOTO 1560
  155. 1550 VD = B(N) -R(N)
  156. 1560 VT = VT +VD
  157. 1570  NEXT 
  158. 1580  IF VT >30  THEN VT = 30
  159. 1582 SC(4) =  INT(100 -3.33 *VT)
  160. 1585  COLOR= 1:TT = 1: GOTO 815
  161. 1600  REM  READOUT SCORE
  162. 1610  HOME : VTAB 22: INVERSE 
  163. 1615  HTAB 10
  164. 1620  PRINT "YOUR SCORE IS "SC(4)"%"
  165. 1630  IF SC(4) >SC(3)  THEN SC(3) = SC(4)
  166. 1640  NORMAL 
  167. 1650  INPUT "TYPE'A'TO REPEAT TEST, 'B'TO CONTINUE, 'C'TO QUIT:";A$
  168. 1660  IF A$ = "A"  THEN  GOTO 622
  169. 1670  IF A$ = "B"  THEN  GOTO 1800
  170. 1680  IF A$ = "C"  THEN  GOTO 15000
  171. 1690  GOTO 1650
  172. 1800  REM  EVALUATION
  173. 1802  FOR DD = 1 TO 3
  174. 1803  POKE 768,120: POKE 769,50: CALL 770: POKE 768,70: POKE 769,30: CALL 770: POKE 768,45: POKE 769,20: CALL 770
  175. 1804  NEXT 
  176. 1810  HOME : TEXT : HOME 
  177. 1820  VTAB 5: INVERSE 
  178. 1830  PRINT "                                        ";
  179. 1840  VTAB 9
  180. 1850  PRINT "                                        ";
  181. 1860  VTAB 20
  182. 1870  PRINT "                                        ";
  183. 1880  NORMAL 
  184. 1890  VTAB 7
  185. 1900  PRINT "         PERFORMANCE EVALUATION         ";
  186. 1910  VTAB 11
  187. 1920  PRINT "  ASSOCIATIVE MEMORY.........."SC(1)"%"
  188. 1930  VTAB 13
  189. 1940  PRINT "  PERCEPTIVE MEMORY..........."SC(3)"%"
  190. 1950  VTAB 14
  191. 1960  PRINT "  -------------------------------"
  192. 1970  VTAB 16
  193. 1980  PRINT "  BEST PERFORMANCE AVG. ......"(SC(1) +SC(3))/2"%"
  194. 1990 EV = (SC(1) +SC(3))/2
  195. 2000  IF EV > = 90  THEN X$ = "HI GENIUS..."
  196. 2010  IF EV <90  THEN X$ = "EXCELLENT !"
  197. 2020  IF EV <70  THEN X$ = "VERY GOOD !"
  198. 2030  IF EV <50  THEN X$ = "HAD A BAD DAY ?"
  199. 2040  IF EV <30  THEN X$ = "GO SEE A SHRINK !"
  200. 2050  VTAB 18
  201. 2060  PRINT ">>>>>>    "X$"    <<<<<<"
  202. 2070  VTAB 22
  203. 2080  INPUT "TYPE'A' TO REPEAT TESTPROGRAM,'B'TO QUIT";A$
  204. 2090  IF A$ = "A"  THEN  GOTO 2105
  205. 2100  IF A$ = "B"  THEN  GOTO 15000
  206. 2103  GOTO 2070
  207. 2105  CLEAR : GOTO 79
  208. 10000  REM  DISPLAY
  209. 10010  IF C(I) = 1  THEN  GOTO 10100
  210. 10020  IF C(I) = 2  THEN  GOTO 10200
  211. 10030  IF C(I) = 3  THEN  GOTO 10300
  212. 10040  IF C(I) = 4  THEN  GOTO 10400
  213. 10080  GOTO 11000
  214. 10100 FLAG = 0: COLOR= 1
  215. 10110  VLIN 3,17 AT 4: VLIN 3,17 AT 5: VLIN 3,17 AT 6: VLIN 3,17 AT 13: VLIN 3,17 AT 14: VLIN 3,17 AT 15
  216. 10120  IF FLAG = 1  THEN  GOTO 11000
  217. 10130  POKE 768,104: POKE 769,70: CALL 770
  218. 10140 FLAG = 1: COLOR= 15: GOTO 10110
  219. 10200 FLAG = 0: COLOR= 12
  220. 10210  VLIN 3,17 AT 24: VLIN 3,17 AT 25: VLIN 3,17 AT 26: VLIN 3,17 AT 33: VLIN 3,17 AT 34: VLIN 3,17 AT 35
  221. 10220  IF FLAG = 1  THEN  GOTO 11000
  222. 10230  POKE 768,84: POKE 769,70: CALL 770
  223. 10240 FLAG = 1: COLOR= 15: GOTO 10210
  224. 10300 FLAG = 0: COLOR= 2
  225. 10310  VLIN 23,37 AT 4: VLIN 23,37 AT 5: VLIN 23,37 AT 6: VLIN 23,37 AT 13: VLIN 23,37 AT 14: VLIN 23,37 AT 15
  226. 10320  IF FLAG = 1  THEN  GOTO 11000
  227. 10330  POKE 768,69: POKE 769,70: CALL 770
  228. 10340 FLAG = 1: COLOR= 15: GOTO 10310
  229. 10400 FLAG = 0: COLOR= 13
  230. 10410  VLIN 23,37 AT 24: VLIN 23,37 AT 25: VLIN 23,37 AT 26: VLIN 23,37 AT 33: VLIN 23,37 AT 34: VLIN 23,37 AT 35
  231. 10420  IF FLAG = 1  THEN  GOTO 11000
  232. 10430  POKE 768,57: POKE 769,70: CALL 770
  233. 10440 FLAG = 1: COLOR= 15: GOTO 10410
  234. 11000  RETURN 
  235. 12000  HOME : GR 
  236. 12060  COLOR= 15
  237. 12070  FOR D = 1 TO 12
  238. 12080  VLIN 3,17 AT 3 +D: VLIN 3,17 AT 23 +D: VLIN 23,37 AT 3 +D: VLIN 23,37 AT 23 +D
  239. 12120  NEXT 
  240. 12130  COLOR= 1
  241. 12140  HLIN 7,12 AT 3: HLIN 7,12 AT 4: HLIN 7,12 AT 5: HLIN 7,12 AT 15: HLIN 7,12 AT 16: HLIN 7,12 AT 17
  242. 12150  COLOR= 12
  243. 12160  HLIN 27,32 AT 3: HLIN 27,32 AT 4: HLIN 27,32 AT 5: HLIN 27,32 AT 15: HLIN 27,32 AT 16: HLIN 27,32 AT 17
  244. 12170  COLOR= 2
  245. 12180  HLIN 7,12 AT 23: HLIN 7,12 AT 24: HLIN 7,12 AT 25: HLIN 7,12 AT 35: HLIN 7,12 AT 36: HLIN 7,12 AT 37
  246. 12190  COLOR= 13
  247. 12200  HLIN 27,32 AT 23: HLIN 27,32 AT 24: HLIN 27,32 AT 25: HLIN 27,32 AT 35: HLIN 27,32 AT 36: HLIN 27,32 AT 37
  248. 12210  COLOR= 0
  249. 12220  HLIN 28,31 AT 7: HLIN 28,31 AT 10: HLIN 28,31 AT 13
  250. 12230  VLIN 8,9 AT 31: VLIN 11,12 AT 28
  251. 12240  VLIN 7,13 AT 10
  252. 12250  HLIN 8,11 AT 27: HLIN 8,11 AT 30: HLIN 8,11 AT 33
  253. 12260  VLIN 28,29 AT 11: VLIN 31,32 AT 11: VLIN 27,30 AT 28: VLIN 27,33 AT 31: HLIN 29,30 AT 30
  254. 12300  RETURN 
  255. 13000  POKE 770,173: POKE 771,48: POKE 772,192: POKE 773,136: POKE 774,208: POKE 775,5: POKE 776,206: POKE 777,1: POKE 778,3: POKE 779,240: POKE 780,9
  256. 13010  POKE 781,202: POKE 782,208: POKE 783,245: POKE 784,174: POKE 785,0: POKE 786,3: POKE 787,76: POKE 788,2: POKE 789,3: POKE 790,96: POKE 791,0: POKE 792,0
  257. 13020  RETURN 
  258. 14000  REM  INSTRUCTIONS
  259. 14005  HOME 
  260. 14010  INVERSE 
  261. 14020  VTAB 5
  262. 14030  PRINT "                                        ";
  263. 14040  VTAB 19
  264. 14050  PRINT "                                        ";
  265. 14060  NORMAL 
  266. 14070  VTAB 12
  267. 14080  PRINT "          MEMORY TESTER"
  268. 14100  PRINT "                BY"
  269. 14110  PRINT "          MARCEL WIDMANN"
  270. 14120  VTAB 23
  271. 14130  INPUT "       DO YOU WANT INSTRUCTIONS (Y/N) ?";A$
  272. 14140  IF A$ = "N"  THEN  GOTO 14999
  273. 14150  IF A$ = "Y"  THEN  GOTO 14200
  274. 14160  GOTO 14120
  275. 14200  HOME 
  276. 14210  PRINT : PRINT 
  277. 14220  PRINT "THIS PROGRAM ALLOWS YOU TO QUANTIFY YOUR MEMORY'S PERFORMANCE IN AN ASSOCIATION  AND A PERCEPTION TEST."
  278. 14229  PRINT 
  279. 14230  PRINT " IN ORDER TO COMPLETE THE TEST AND AR-   RIVE AT A RATING, YOU MUST PERFORM BOTH TESTS. HOWEVER, YOU MAY REPEAT ANY      SINGLE TEST AS OFTEN AS YOU WANT AND"
  280. 14240  PRINT " ONLY THE BEST SCORE OF EACH TEST WILL   BE USED FOR THE FINAL RATING."
  281. 14250  PRINT : PRINT 
  282. 14260  PRINT "IN THE FIRST TEST YOU WILL BE PRESENTED  WITH A SEQUENCE OF EVENTS AND YOU WILL  HAVE TO RECREATE THE PROPER SEQUENCE BY DEPRESSING KEYS'1','2','3' OR'4'."
  283. 14270  PRINT " EACH SUCCESSFULLY COMPLETED SEQUENCE    WILL ADD ONE MORE ELEMENT TO THE NEXT   ONE."
  284. 14280  PRINT "----------------------------------------"
  285. 14290  INPUT "TYPE'A'TO CONTINUE ";A$
  286. 14300  IF A$ = "A"  THEN  GOTO 14400
  287. 14310  GOTO 14290
  288. 14400  HOME : PRINT : PRINT 
  289. 14410  PRINT "IN THE SECOND TEST YOU WILL BE PRESENTED WITH A GRAPHIC PATTERN COMPOSED OF FIVE ELEMENTS. YOU WILL HAVE TO RECREATE     THIS PATTERN USING THE INDICATED KEYS."
  290. 14420  PRINT 
  291. 14430  PRINT "ONCE YOU'VE COMPLETED YOUR PATTERN YOU   MUST PRESS THE 'RETURN' KEY IN ORDER TO ENTER IT. IF AFTER PRESSING 'RETURN'    YOU FAIL TO GET ANY RESPONSE, YOU HAVE  NOT COMPLETED FIVE VALID ELEMENTS."
  292. 14440  VTAB 23
  293. 14450  INPUT "      TYPE 'A' IF YOU'RE READY.....:";A$
  294. 14460  IF A$ = "A"  THEN  GOTO 14999
  295. 14470  GOTO 14450
  296. 14999  RETURN 
  297. 15000  TEXT : HOME : END 
  298. 16000  REM  SECOND GAME SCORE
  299. 16010  IF EFLAG = 3  OR EFLAG = 4  THEN  GOTO 16030
  300. 16020 T = XO: GOTO 16040
  301. 16030 T = YO
  302. 16040 N = N +1
  303. 16050  IF N = 7  THEN  GOTO 16070
  304. 16060 R(N) = T
  305. 16070  RETURN 
  306. 17000  GR : REM  DISPLAY
  307. 17010  COLOR= 9
  308. 17020  HLIN 3,36 AT 36: HLIN 3,36 AT 3
  309. 17030  VLIN 3,36 AT 36: VLIN 3,36 AT 3
  310. 17040  COLOR= 15
  311. 17050  FOR TI = 4 TO 35
  312. 17060  HLIN 4,35 AT TI
  313. 17070  NEXT 
  314. 17080  COLOR= 0
  315. 17090  PLOT 20,20
  316. 17100  RETURN